package de.thwildau.tm.moses.xabnf.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import de.thwildau.tm.moses.xabnf.services.XabnfGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalXabnfParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'GeneratorModel'", "'{'", "'file'", "'='", "'language'", "'package'", "'entryRule'", "'encoding'", "'}'", "'Bindings'", "'rule'", "'to'", "'ref'", "'toClass'", "'toMethod'", "'Java'", "'C++'", "'C'"
    };
    public static final int RULE_ID=5;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__19=19;
    public static final int RULE_STRING=4;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalXabnfParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalXabnfParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalXabnfParser.tokenNames; }
    public String getGrammarFileName() { return "../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g"; }



     	private XabnfGrammarAccess grammarAccess;
     	
        public InternalXabnfParser(TokenStream input, XabnfGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Xabnf";	
       	}
       	
       	@Override
       	protected XabnfGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleXabnf"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:68:1: entryRuleXabnf returns [EObject current=null] : iv_ruleXabnf= ruleXabnf EOF ;
    public final EObject entryRuleXabnf() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXabnf = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:69:2: (iv_ruleXabnf= ruleXabnf EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:70:2: iv_ruleXabnf= ruleXabnf EOF
            {
             newCompositeNode(grammarAccess.getXabnfRule()); 
            pushFollow(FOLLOW_ruleXabnf_in_entryRuleXabnf75);
            iv_ruleXabnf=ruleXabnf();

            state._fsp--;

             current =iv_ruleXabnf; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleXabnf85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXabnf"


    // $ANTLR start "ruleXabnf"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:77:1: ruleXabnf returns [EObject current=null] : ( ( (lv_generatorModel_0_0= ruleGeneratorModel ) ) ( (lv_bindings_1_0= ruleBindings ) ) ) ;
    public final EObject ruleXabnf() throws RecognitionException {
        EObject current = null;

        EObject lv_generatorModel_0_0 = null;

        EObject lv_bindings_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:80:28: ( ( ( (lv_generatorModel_0_0= ruleGeneratorModel ) ) ( (lv_bindings_1_0= ruleBindings ) ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:81:1: ( ( (lv_generatorModel_0_0= ruleGeneratorModel ) ) ( (lv_bindings_1_0= ruleBindings ) ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:81:1: ( ( (lv_generatorModel_0_0= ruleGeneratorModel ) ) ( (lv_bindings_1_0= ruleBindings ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:81:2: ( (lv_generatorModel_0_0= ruleGeneratorModel ) ) ( (lv_bindings_1_0= ruleBindings ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:81:2: ( (lv_generatorModel_0_0= ruleGeneratorModel ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:82:1: (lv_generatorModel_0_0= ruleGeneratorModel )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:82:1: (lv_generatorModel_0_0= ruleGeneratorModel )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:83:3: lv_generatorModel_0_0= ruleGeneratorModel
            {
             
            	        newCompositeNode(grammarAccess.getXabnfAccess().getGeneratorModelGeneratorModelParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleGeneratorModel_in_ruleXabnf131);
            lv_generatorModel_0_0=ruleGeneratorModel();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getXabnfRule());
            	        }
                   		set(
                   			current, 
                   			"generatorModel",
                    		lv_generatorModel_0_0, 
                    		"GeneratorModel");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:99:2: ( (lv_bindings_1_0= ruleBindings ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:100:1: (lv_bindings_1_0= ruleBindings )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:100:1: (lv_bindings_1_0= ruleBindings )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:101:3: lv_bindings_1_0= ruleBindings
            {
             
            	        newCompositeNode(grammarAccess.getXabnfAccess().getBindingsBindingsParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleBindings_in_ruleXabnf152);
            lv_bindings_1_0=ruleBindings();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getXabnfRule());
            	        }
                   		set(
                   			current, 
                   			"bindings",
                    		lv_bindings_1_0, 
                    		"Bindings");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXabnf"


    // $ANTLR start "entryRuleGeneratorModel"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:125:1: entryRuleGeneratorModel returns [EObject current=null] : iv_ruleGeneratorModel= ruleGeneratorModel EOF ;
    public final EObject entryRuleGeneratorModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGeneratorModel = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:126:2: (iv_ruleGeneratorModel= ruleGeneratorModel EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:127:2: iv_ruleGeneratorModel= ruleGeneratorModel EOF
            {
             newCompositeNode(grammarAccess.getGeneratorModelRule()); 
            pushFollow(FOLLOW_ruleGeneratorModel_in_entryRuleGeneratorModel188);
            iv_ruleGeneratorModel=ruleGeneratorModel();

            state._fsp--;

             current =iv_ruleGeneratorModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleGeneratorModel198); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleGeneratorModel"


    // $ANTLR start "ruleGeneratorModel"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:134:1: ruleGeneratorModel returns [EObject current=null] : ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) ) )+ {...}?) ) ) ;
    public final EObject ruleGeneratorModel() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_file_5_0=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token lv_package_11_0=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        Token lv_encoding_17_0=null;
        Token otherlv_18=null;
        Enumerator lv_language_8_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:137:28: ( ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) ) )+ {...}?) ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:138:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) ) )+ {...}?) ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:138:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) ) )+ {...}?) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:140:1: ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) ) )+ {...}?) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:140:1: ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) ) )+ {...}?) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:141:2: ( ( ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) ) )+ {...}?)
            {
             
            	  getUnorderedGroupHelper().enter(grammarAccess.getGeneratorModelAccess().getUnorderedGroup());
            	
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:144:2: ( ( ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) ) )+ {...}?)
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:145:3: ( ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) ) )+ {...}?
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:145:3: ( ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) ) )+
            int cnt1=0;
            loop1:
            do {
                int alt1=7;
                int LA1_0 = input.LA(1);

                if ( LA1_0 ==11 && getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 0) ) {
                    alt1=1;
                }
                else if ( LA1_0 ==15 && getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 1) ) {
                    alt1=2;
                }
                else if ( LA1_0 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 2) ) {
                    alt1=3;
                }
                else if ( LA1_0 ==17 && getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 3) ) {
                    alt1=4;
                }
                else if ( LA1_0 ==18 && getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 4) ) {
                    alt1=5;
                }
                else if ( LA1_0 ==19 && getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 5) ) {
                    alt1=6;
                }


                switch (alt1) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:147:4: ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:147:4: ({...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:148:5: {...}? => ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 0) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 0)");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:148:109: ( ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:149:6: ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 0);
            	    	 				
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:152:6: ({...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:152:7: {...}? => (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "true");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:152:16: (otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:152:18: otherlv_1= 'GeneratorModel' otherlv_2= '{' otherlv_3= 'file' otherlv_4= '=' ( (lv_file_5_0= RULE_STRING ) )
            	    {
            	    otherlv_1=(Token)match(input,11,FOLLOW_11_in_ruleGeneratorModel280); 

            	        	newLeafNode(otherlv_1, grammarAccess.getGeneratorModelAccess().getGeneratorModelKeyword_0_0());
            	        
            	    otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleGeneratorModel292); 

            	        	newLeafNode(otherlv_2, grammarAccess.getGeneratorModelAccess().getLeftCurlyBracketKeyword_0_1());
            	        
            	    otherlv_3=(Token)match(input,13,FOLLOW_13_in_ruleGeneratorModel304); 

            	        	newLeafNode(otherlv_3, grammarAccess.getGeneratorModelAccess().getFileKeyword_0_2());
            	        
            	    otherlv_4=(Token)match(input,14,FOLLOW_14_in_ruleGeneratorModel316); 

            	        	newLeafNode(otherlv_4, grammarAccess.getGeneratorModelAccess().getEqualsSignKeyword_0_3());
            	        
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:168:1: ( (lv_file_5_0= RULE_STRING ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:169:1: (lv_file_5_0= RULE_STRING )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:169:1: (lv_file_5_0= RULE_STRING )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:170:3: lv_file_5_0= RULE_STRING
            	    {
            	    lv_file_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleGeneratorModel333); 

            	    			newLeafNode(lv_file_5_0, grammarAccess.getGeneratorModelAccess().getFileSTRINGTerminalRuleCall_0_4_0()); 
            	    		

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getGeneratorModelRule());
            	    	        }
            	           		setWithLastConsumed(
            	           			current, 
            	           			"file",
            	            		lv_file_5_0, 
            	            		"STRING");
            	    	    

            	    }


            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getGeneratorModelAccess().getUnorderedGroup());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:193:4: ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:193:4: ({...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:194:5: {...}? => ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 1) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 1)");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:194:109: ( ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:195:6: ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 1);
            	    	 				
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:198:6: ({...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:198:7: {...}? => (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "true");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:198:16: (otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:198:18: otherlv_6= 'language' otherlv_7= '=' ( (lv_language_8_0= ruleLanguage ) )
            	    {
            	    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleGeneratorModel406); 

            	        	newLeafNode(otherlv_6, grammarAccess.getGeneratorModelAccess().getLanguageKeyword_1_0());
            	        
            	    otherlv_7=(Token)match(input,14,FOLLOW_14_in_ruleGeneratorModel418); 

            	        	newLeafNode(otherlv_7, grammarAccess.getGeneratorModelAccess().getEqualsSignKeyword_1_1());
            	        
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:206:1: ( (lv_language_8_0= ruleLanguage ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:207:1: (lv_language_8_0= ruleLanguage )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:207:1: (lv_language_8_0= ruleLanguage )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:208:3: lv_language_8_0= ruleLanguage
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getGeneratorModelAccess().getLanguageLanguageEnumRuleCall_1_2_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleLanguage_in_ruleGeneratorModel439);
            	    lv_language_8_0=ruleLanguage();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getGeneratorModelRule());
            	    	        }
            	           		set(
            	           			current, 
            	           			"language",
            	            		lv_language_8_0, 
            	            		"Language");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getGeneratorModelAccess().getUnorderedGroup());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:231:4: ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:231:4: ({...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:232:5: {...}? => ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 2) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 2)");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:232:109: ( ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:233:6: ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 2);
            	    	 				
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:236:6: ({...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:236:7: {...}? => (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "true");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:236:16: (otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:236:18: otherlv_9= 'package' otherlv_10= '=' ( (lv_package_11_0= RULE_STRING ) )
            	    {
            	    otherlv_9=(Token)match(input,16,FOLLOW_16_in_ruleGeneratorModel507); 

            	        	newLeafNode(otherlv_9, grammarAccess.getGeneratorModelAccess().getPackageKeyword_2_0());
            	        
            	    otherlv_10=(Token)match(input,14,FOLLOW_14_in_ruleGeneratorModel519); 

            	        	newLeafNode(otherlv_10, grammarAccess.getGeneratorModelAccess().getEqualsSignKeyword_2_1());
            	        
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:244:1: ( (lv_package_11_0= RULE_STRING ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:245:1: (lv_package_11_0= RULE_STRING )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:245:1: (lv_package_11_0= RULE_STRING )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:246:3: lv_package_11_0= RULE_STRING
            	    {
            	    lv_package_11_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleGeneratorModel536); 

            	    			newLeafNode(lv_package_11_0, grammarAccess.getGeneratorModelAccess().getPackageSTRINGTerminalRuleCall_2_2_0()); 
            	    		

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getGeneratorModelRule());
            	    	        }
            	           		setWithLastConsumed(
            	           			current, 
            	           			"package",
            	            		lv_package_11_0, 
            	            		"STRING");
            	    	    

            	    }


            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getGeneratorModelAccess().getUnorderedGroup());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:269:4: ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:269:4: ({...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:270:5: {...}? => ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 3) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 3)");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:270:109: ( ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:271:6: ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 3);
            	    	 				
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:274:6: ({...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:274:7: {...}? => (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "true");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:274:16: (otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:274:18: otherlv_12= 'entryRule' otherlv_13= '=' ( (otherlv_14= RULE_ID ) )
            	    {
            	    otherlv_12=(Token)match(input,17,FOLLOW_17_in_ruleGeneratorModel609); 

            	        	newLeafNode(otherlv_12, grammarAccess.getGeneratorModelAccess().getEntryRuleKeyword_3_0());
            	        
            	    otherlv_13=(Token)match(input,14,FOLLOW_14_in_ruleGeneratorModel621); 

            	        	newLeafNode(otherlv_13, grammarAccess.getGeneratorModelAccess().getEqualsSignKeyword_3_1());
            	        
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:282:1: ( (otherlv_14= RULE_ID ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:283:1: (otherlv_14= RULE_ID )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:283:1: (otherlv_14= RULE_ID )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:284:3: otherlv_14= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getGeneratorModelRule());
            	    	        }
            	            
            	    otherlv_14=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleGeneratorModel641); 

            	    		newLeafNode(otherlv_14, grammarAccess.getGeneratorModelAccess().getEntryRuleRuleCrossReference_3_2_0()); 
            	    	

            	    }


            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getGeneratorModelAccess().getUnorderedGroup());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 5 :
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:302:4: ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:302:4: ({...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:303:5: {...}? => ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 4) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 4)");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:303:109: ( ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:304:6: ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 4);
            	    	 				
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:307:6: ({...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:307:7: {...}? => (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "true");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:307:16: (otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:307:18: otherlv_15= 'encoding' otherlv_16= '=' ( (lv_encoding_17_0= RULE_STRING ) )
            	    {
            	    otherlv_15=(Token)match(input,18,FOLLOW_18_in_ruleGeneratorModel709); 

            	        	newLeafNode(otherlv_15, grammarAccess.getGeneratorModelAccess().getEncodingKeyword_4_0());
            	        
            	    otherlv_16=(Token)match(input,14,FOLLOW_14_in_ruleGeneratorModel721); 

            	        	newLeafNode(otherlv_16, grammarAccess.getGeneratorModelAccess().getEqualsSignKeyword_4_1());
            	        
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:315:1: ( (lv_encoding_17_0= RULE_STRING ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:316:1: (lv_encoding_17_0= RULE_STRING )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:316:1: (lv_encoding_17_0= RULE_STRING )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:317:3: lv_encoding_17_0= RULE_STRING
            	    {
            	    lv_encoding_17_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleGeneratorModel738); 

            	    			newLeafNode(lv_encoding_17_0, grammarAccess.getGeneratorModelAccess().getEncodingSTRINGTerminalRuleCall_4_2_0()); 
            	    		

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getGeneratorModelRule());
            	    	        }
            	           		setWithLastConsumed(
            	           			current, 
            	           			"encoding",
            	            		lv_encoding_17_0, 
            	            		"STRING");
            	    	    

            	    }


            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getGeneratorModelAccess().getUnorderedGroup());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 6 :
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:340:4: ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:340:4: ({...}? => ( ({...}? => (otherlv_18= '}' ) ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:341:5: {...}? => ( ({...}? => (otherlv_18= '}' ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 5) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "getUnorderedGroupHelper().canSelect(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 5)");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:341:109: ( ({...}? => (otherlv_18= '}' ) ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:342:6: ({...}? => (otherlv_18= '}' ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getGeneratorModelAccess().getUnorderedGroup(), 5);
            	    	 				
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:345:6: ({...}? => (otherlv_18= '}' ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:345:7: {...}? => (otherlv_18= '}' )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleGeneratorModel", "true");
            	    }
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:345:16: (otherlv_18= '}' )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:345:18: otherlv_18= '}'
            	    {
            	    otherlv_18=(Token)match(input,19,FOLLOW_19_in_ruleGeneratorModel811); 

            	        	newLeafNode(otherlv_18, grammarAccess.getGeneratorModelAccess().getRightCurlyBracketKeyword_5());
            	        

            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getGeneratorModelAccess().getUnorderedGroup());
            	    	 				

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt1 >= 1 ) break loop1;
                        EarlyExitException eee =
                            new EarlyExitException(1, input);
                        throw eee;
                }
                cnt1++;
            } while (true);

            if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getGeneratorModelAccess().getUnorderedGroup()) ) {
                throw new FailedPredicateException(input, "ruleGeneratorModel", "getUnorderedGroupHelper().canLeave(grammarAccess.getGeneratorModelAccess().getUnorderedGroup())");
            }

            }


            }

             
            	  getUnorderedGroupHelper().leave(grammarAccess.getGeneratorModelAccess().getUnorderedGroup());
            	

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleGeneratorModel"


    // $ANTLR start "entryRuleBindings"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:372:1: entryRuleBindings returns [EObject current=null] : iv_ruleBindings= ruleBindings EOF ;
    public final EObject entryRuleBindings() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBindings = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:373:2: (iv_ruleBindings= ruleBindings EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:374:2: iv_ruleBindings= ruleBindings EOF
            {
             newCompositeNode(grammarAccess.getBindingsRule()); 
            pushFollow(FOLLOW_ruleBindings_in_entryRuleBindings893);
            iv_ruleBindings=ruleBindings();

            state._fsp--;

             current =iv_ruleBindings; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBindings903); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBindings"


    // $ANTLR start "ruleBindings"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:381:1: ruleBindings returns [EObject current=null] : ( () otherlv_1= 'Bindings' otherlv_2= '{' ( (lv_binding_3_0= ruleBinding ) )* otherlv_4= '}' ) ;
    public final EObject ruleBindings() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_binding_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:384:28: ( ( () otherlv_1= 'Bindings' otherlv_2= '{' ( (lv_binding_3_0= ruleBinding ) )* otherlv_4= '}' ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:385:1: ( () otherlv_1= 'Bindings' otherlv_2= '{' ( (lv_binding_3_0= ruleBinding ) )* otherlv_4= '}' )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:385:1: ( () otherlv_1= 'Bindings' otherlv_2= '{' ( (lv_binding_3_0= ruleBinding ) )* otherlv_4= '}' )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:385:2: () otherlv_1= 'Bindings' otherlv_2= '{' ( (lv_binding_3_0= ruleBinding ) )* otherlv_4= '}'
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:385:2: ()
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:386:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getBindingsAccess().getBindingsAction_0(),
                        current);
                

            }

            otherlv_1=(Token)match(input,20,FOLLOW_20_in_ruleBindings949); 

                	newLeafNode(otherlv_1, grammarAccess.getBindingsAccess().getBindingsKeyword_1());
                
            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleBindings961); 

                	newLeafNode(otherlv_2, grammarAccess.getBindingsAccess().getLeftCurlyBracketKeyword_2());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:399:1: ( (lv_binding_3_0= ruleBinding ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==21) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:400:1: (lv_binding_3_0= ruleBinding )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:400:1: (lv_binding_3_0= ruleBinding )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:401:3: lv_binding_3_0= ruleBinding
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getBindingsAccess().getBindingBindingParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleBinding_in_ruleBindings982);
            	    lv_binding_3_0=ruleBinding();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getBindingsRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"binding",
            	            		lv_binding_3_0, 
            	            		"Binding");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            otherlv_4=(Token)match(input,19,FOLLOW_19_in_ruleBindings995); 

                	newLeafNode(otherlv_4, grammarAccess.getBindingsAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBindings"


    // $ANTLR start "entryRuleBinding"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:429:1: entryRuleBinding returns [EObject current=null] : iv_ruleBinding= ruleBinding EOF ;
    public final EObject entryRuleBinding() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBinding = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:430:2: (iv_ruleBinding= ruleBinding EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:431:2: iv_ruleBinding= ruleBinding EOF
            {
             newCompositeNode(grammarAccess.getBindingRule()); 
            pushFollow(FOLLOW_ruleBinding_in_entryRuleBinding1031);
            iv_ruleBinding=ruleBinding();

            state._fsp--;

             current =iv_ruleBinding; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBinding1041); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBinding"


    // $ANTLR start "ruleBinding"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:438:1: ruleBinding returns [EObject current=null] : (this_RuleBinding_0= ruleRuleBinding | this_ClassBinding_1= ruleClassBinding ) ;
    public final EObject ruleBinding() throws RecognitionException {
        EObject current = null;

        EObject this_RuleBinding_0 = null;

        EObject this_ClassBinding_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:441:28: ( (this_RuleBinding_0= ruleRuleBinding | this_ClassBinding_1= ruleClassBinding ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:442:1: (this_RuleBinding_0= ruleRuleBinding | this_ClassBinding_1= ruleClassBinding )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:442:1: (this_RuleBinding_0= ruleRuleBinding | this_ClassBinding_1= ruleClassBinding )
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==21) ) {
                int LA3_1 = input.LA(2);

                if ( (LA3_1==RULE_ID) ) {
                    int LA3_2 = input.LA(3);

                    if ( (LA3_2==24) ) {
                        alt3=2;
                    }
                    else if ( (LA3_2==EOF||LA3_2==12||LA3_2==19||(LA3_2>=21 && LA3_2<=22)) ) {
                        alt3=1;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 3, 2, input);

                        throw nvae;
                    }
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 3, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }
            switch (alt3) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:443:5: this_RuleBinding_0= ruleRuleBinding
                    {
                     
                            newCompositeNode(grammarAccess.getBindingAccess().getRuleBindingParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleRuleBinding_in_ruleBinding1088);
                    this_RuleBinding_0=ruleRuleBinding();

                    state._fsp--;

                     
                            current = this_RuleBinding_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:453:5: this_ClassBinding_1= ruleClassBinding
                    {
                     
                            newCompositeNode(grammarAccess.getBindingAccess().getClassBindingParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleClassBinding_in_ruleBinding1115);
                    this_ClassBinding_1=ruleClassBinding();

                    state._fsp--;

                     
                            current = this_ClassBinding_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBinding"


    // $ANTLR start "entryRuleRuleBinding"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:469:1: entryRuleRuleBinding returns [EObject current=null] : iv_ruleRuleBinding= ruleRuleBinding EOF ;
    public final EObject entryRuleRuleBinding() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRuleBinding = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:470:2: (iv_ruleRuleBinding= ruleRuleBinding EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:471:2: iv_ruleRuleBinding= ruleRuleBinding EOF
            {
             newCompositeNode(grammarAccess.getRuleBindingRule()); 
            pushFollow(FOLLOW_ruleRuleBinding_in_entryRuleRuleBinding1150);
            iv_ruleRuleBinding=ruleRuleBinding();

            state._fsp--;

             current =iv_ruleRuleBinding; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRuleBinding1160); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRuleBinding"


    // $ANTLR start "ruleRuleBinding"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:478:1: ruleRuleBinding returns [EObject current=null] : (otherlv_0= 'rule' ( (otherlv_1= RULE_ID ) ) (otherlv_2= 'to' ( (lv_targetRuleName_3_0= RULE_STRING ) ) )? (otherlv_4= '{' ( (lv_fieldBindings_5_0= ruleFieldBinding ) )+ otherlv_6= '}' )? ) ;
    public final EObject ruleRuleBinding() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_targetRuleName_3_0=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_fieldBindings_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:481:28: ( (otherlv_0= 'rule' ( (otherlv_1= RULE_ID ) ) (otherlv_2= 'to' ( (lv_targetRuleName_3_0= RULE_STRING ) ) )? (otherlv_4= '{' ( (lv_fieldBindings_5_0= ruleFieldBinding ) )+ otherlv_6= '}' )? ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:482:1: (otherlv_0= 'rule' ( (otherlv_1= RULE_ID ) ) (otherlv_2= 'to' ( (lv_targetRuleName_3_0= RULE_STRING ) ) )? (otherlv_4= '{' ( (lv_fieldBindings_5_0= ruleFieldBinding ) )+ otherlv_6= '}' )? )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:482:1: (otherlv_0= 'rule' ( (otherlv_1= RULE_ID ) ) (otherlv_2= 'to' ( (lv_targetRuleName_3_0= RULE_STRING ) ) )? (otherlv_4= '{' ( (lv_fieldBindings_5_0= ruleFieldBinding ) )+ otherlv_6= '}' )? )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:482:3: otherlv_0= 'rule' ( (otherlv_1= RULE_ID ) ) (otherlv_2= 'to' ( (lv_targetRuleName_3_0= RULE_STRING ) ) )? (otherlv_4= '{' ( (lv_fieldBindings_5_0= ruleFieldBinding ) )+ otherlv_6= '}' )?
            {
            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleRuleBinding1197); 

                	newLeafNode(otherlv_0, grammarAccess.getRuleBindingAccess().getRuleKeyword_0());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:486:1: ( (otherlv_1= RULE_ID ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:487:1: (otherlv_1= RULE_ID )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:487:1: (otherlv_1= RULE_ID )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:488:3: otherlv_1= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getRuleBindingRule());
            	        }
                    
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRuleBinding1217); 

            		newLeafNode(otherlv_1, grammarAccess.getRuleBindingAccess().getRuleRuleCrossReference_1_0()); 
            	

            }


            }

            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:499:2: (otherlv_2= 'to' ( (lv_targetRuleName_3_0= RULE_STRING ) ) )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==22) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:499:4: otherlv_2= 'to' ( (lv_targetRuleName_3_0= RULE_STRING ) )
                    {
                    otherlv_2=(Token)match(input,22,FOLLOW_22_in_ruleRuleBinding1230); 

                        	newLeafNode(otherlv_2, grammarAccess.getRuleBindingAccess().getToKeyword_2_0());
                        
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:503:1: ( (lv_targetRuleName_3_0= RULE_STRING ) )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:504:1: (lv_targetRuleName_3_0= RULE_STRING )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:504:1: (lv_targetRuleName_3_0= RULE_STRING )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:505:3: lv_targetRuleName_3_0= RULE_STRING
                    {
                    lv_targetRuleName_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRuleBinding1247); 

                    			newLeafNode(lv_targetRuleName_3_0, grammarAccess.getRuleBindingAccess().getTargetRuleNameSTRINGTerminalRuleCall_2_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRuleBindingRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"targetRuleName",
                            		lv_targetRuleName_3_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:521:4: (otherlv_4= '{' ( (lv_fieldBindings_5_0= ruleFieldBinding ) )+ otherlv_6= '}' )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==12) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:521:6: otherlv_4= '{' ( (lv_fieldBindings_5_0= ruleFieldBinding ) )+ otherlv_6= '}'
                    {
                    otherlv_4=(Token)match(input,12,FOLLOW_12_in_ruleRuleBinding1267); 

                        	newLeafNode(otherlv_4, grammarAccess.getRuleBindingAccess().getLeftCurlyBracketKeyword_3_0());
                        
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:525:1: ( (lv_fieldBindings_5_0= ruleFieldBinding ) )+
                    int cnt5=0;
                    loop5:
                    do {
                        int alt5=2;
                        int LA5_0 = input.LA(1);

                        if ( (LA5_0==23) ) {
                            alt5=1;
                        }


                        switch (alt5) {
                    	case 1 :
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:526:1: (lv_fieldBindings_5_0= ruleFieldBinding )
                    	    {
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:526:1: (lv_fieldBindings_5_0= ruleFieldBinding )
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:527:3: lv_fieldBindings_5_0= ruleFieldBinding
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getRuleBindingAccess().getFieldBindingsFieldBindingParserRuleCall_3_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleFieldBinding_in_ruleRuleBinding1288);
                    	    lv_fieldBindings_5_0=ruleFieldBinding();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getRuleBindingRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"fieldBindings",
                    	            		lv_fieldBindings_5_0, 
                    	            		"FieldBinding");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt5 >= 1 ) break loop5;
                                EarlyExitException eee =
                                    new EarlyExitException(5, input);
                                throw eee;
                        }
                        cnt5++;
                    } while (true);

                    otherlv_6=(Token)match(input,19,FOLLOW_19_in_ruleRuleBinding1301); 

                        	newLeafNode(otherlv_6, grammarAccess.getRuleBindingAccess().getRightCurlyBracketKeyword_3_2());
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRuleBinding"


    // $ANTLR start "entryRuleFieldBinding"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:555:1: entryRuleFieldBinding returns [EObject current=null] : iv_ruleFieldBinding= ruleFieldBinding EOF ;
    public final EObject entryRuleFieldBinding() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFieldBinding = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:556:2: (iv_ruleFieldBinding= ruleFieldBinding EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:557:2: iv_ruleFieldBinding= ruleFieldBinding EOF
            {
             newCompositeNode(grammarAccess.getFieldBindingRule()); 
            pushFollow(FOLLOW_ruleFieldBinding_in_entryRuleFieldBinding1339);
            iv_ruleFieldBinding=ruleFieldBinding();

            state._fsp--;

             current =iv_ruleFieldBinding; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFieldBinding1349); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFieldBinding"


    // $ANTLR start "ruleFieldBinding"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:564:1: ruleFieldBinding returns [EObject current=null] : (otherlv_0= 'ref' ( (lv_name_1_0= RULE_STRING ) ) ( (otherlv_2= RULE_ID ) )? otherlv_3= 'to' ( (lv_targetName_4_0= RULE_STRING ) ) ) ;
    public final EObject ruleFieldBinding() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token lv_targetName_4_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:567:28: ( (otherlv_0= 'ref' ( (lv_name_1_0= RULE_STRING ) ) ( (otherlv_2= RULE_ID ) )? otherlv_3= 'to' ( (lv_targetName_4_0= RULE_STRING ) ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:568:1: (otherlv_0= 'ref' ( (lv_name_1_0= RULE_STRING ) ) ( (otherlv_2= RULE_ID ) )? otherlv_3= 'to' ( (lv_targetName_4_0= RULE_STRING ) ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:568:1: (otherlv_0= 'ref' ( (lv_name_1_0= RULE_STRING ) ) ( (otherlv_2= RULE_ID ) )? otherlv_3= 'to' ( (lv_targetName_4_0= RULE_STRING ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:568:3: otherlv_0= 'ref' ( (lv_name_1_0= RULE_STRING ) ) ( (otherlv_2= RULE_ID ) )? otherlv_3= 'to' ( (lv_targetName_4_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,23,FOLLOW_23_in_ruleFieldBinding1386); 

                	newLeafNode(otherlv_0, grammarAccess.getFieldBindingAccess().getRefKeyword_0());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:572:1: ( (lv_name_1_0= RULE_STRING ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:573:1: (lv_name_1_0= RULE_STRING )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:573:1: (lv_name_1_0= RULE_STRING )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:574:3: lv_name_1_0= RULE_STRING
            {
            lv_name_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleFieldBinding1403); 

            			newLeafNode(lv_name_1_0, grammarAccess.getFieldBindingAccess().getNameSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFieldBindingRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"STRING");
            	    

            }


            }

            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:590:2: ( (otherlv_2= RULE_ID ) )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==RULE_ID) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:591:1: (otherlv_2= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:591:1: (otherlv_2= RULE_ID )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:592:3: otherlv_2= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getFieldBindingRule());
                    	        }
                            
                    otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFieldBinding1428); 

                    		newLeafNode(otherlv_2, grammarAccess.getFieldBindingAccess().getTypeRuleCrossReference_2_0()); 
                    	

                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,22,FOLLOW_22_in_ruleFieldBinding1441); 

                	newLeafNode(otherlv_3, grammarAccess.getFieldBindingAccess().getToKeyword_3());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:607:1: ( (lv_targetName_4_0= RULE_STRING ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:608:1: (lv_targetName_4_0= RULE_STRING )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:608:1: (lv_targetName_4_0= RULE_STRING )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:609:3: lv_targetName_4_0= RULE_STRING
            {
            lv_targetName_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleFieldBinding1458); 

            			newLeafNode(lv_targetName_4_0, grammarAccess.getFieldBindingAccess().getTargetNameSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFieldBindingRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"targetName",
                    		lv_targetName_4_0, 
                    		"STRING");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFieldBinding"


    // $ANTLR start "entryRuleClassBinding"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:633:1: entryRuleClassBinding returns [EObject current=null] : iv_ruleClassBinding= ruleClassBinding EOF ;
    public final EObject entryRuleClassBinding() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassBinding = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:634:2: (iv_ruleClassBinding= ruleClassBinding EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:635:2: iv_ruleClassBinding= ruleClassBinding EOF
            {
             newCompositeNode(grammarAccess.getClassBindingRule()); 
            pushFollow(FOLLOW_ruleClassBinding_in_entryRuleClassBinding1499);
            iv_ruleClassBinding=ruleClassBinding();

            state._fsp--;

             current =iv_ruleClassBinding; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleClassBinding1509); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassBinding"


    // $ANTLR start "ruleClassBinding"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:642:1: ruleClassBinding returns [EObject current=null] : (otherlv_0= 'rule' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'toClass' ( (lv_className_3_0= RULE_STRING ) ) (otherlv_4= 'toMethod' ( (lv_methodName_5_0= RULE_STRING ) ) )? ) ;
    public final EObject ruleClassBinding() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_className_3_0=null;
        Token otherlv_4=null;
        Token lv_methodName_5_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:645:28: ( (otherlv_0= 'rule' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'toClass' ( (lv_className_3_0= RULE_STRING ) ) (otherlv_4= 'toMethod' ( (lv_methodName_5_0= RULE_STRING ) ) )? ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:646:1: (otherlv_0= 'rule' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'toClass' ( (lv_className_3_0= RULE_STRING ) ) (otherlv_4= 'toMethod' ( (lv_methodName_5_0= RULE_STRING ) ) )? )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:646:1: (otherlv_0= 'rule' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'toClass' ( (lv_className_3_0= RULE_STRING ) ) (otherlv_4= 'toMethod' ( (lv_methodName_5_0= RULE_STRING ) ) )? )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:646:3: otherlv_0= 'rule' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'toClass' ( (lv_className_3_0= RULE_STRING ) ) (otherlv_4= 'toMethod' ( (lv_methodName_5_0= RULE_STRING ) ) )?
            {
            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleClassBinding1546); 

                	newLeafNode(otherlv_0, grammarAccess.getClassBindingAccess().getRuleKeyword_0());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:650:1: ( (otherlv_1= RULE_ID ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:651:1: (otherlv_1= RULE_ID )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:651:1: (otherlv_1= RULE_ID )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:652:3: otherlv_1= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getClassBindingRule());
            	        }
                    
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleClassBinding1566); 

            		newLeafNode(otherlv_1, grammarAccess.getClassBindingAccess().getRuleRuleCrossReference_1_0()); 
            	

            }


            }

            otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruleClassBinding1578); 

                	newLeafNode(otherlv_2, grammarAccess.getClassBindingAccess().getToClassKeyword_2());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:667:1: ( (lv_className_3_0= RULE_STRING ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:668:1: (lv_className_3_0= RULE_STRING )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:668:1: (lv_className_3_0= RULE_STRING )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:669:3: lv_className_3_0= RULE_STRING
            {
            lv_className_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleClassBinding1595); 

            			newLeafNode(lv_className_3_0, grammarAccess.getClassBindingAccess().getClassNameSTRINGTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getClassBindingRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"className",
                    		lv_className_3_0, 
                    		"STRING");
            	    

            }


            }

            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:685:2: (otherlv_4= 'toMethod' ( (lv_methodName_5_0= RULE_STRING ) ) )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==25) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:685:4: otherlv_4= 'toMethod' ( (lv_methodName_5_0= RULE_STRING ) )
                    {
                    otherlv_4=(Token)match(input,25,FOLLOW_25_in_ruleClassBinding1613); 

                        	newLeafNode(otherlv_4, grammarAccess.getClassBindingAccess().getToMethodKeyword_4_0());
                        
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:689:1: ( (lv_methodName_5_0= RULE_STRING ) )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:690:1: (lv_methodName_5_0= RULE_STRING )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:690:1: (lv_methodName_5_0= RULE_STRING )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:691:3: lv_methodName_5_0= RULE_STRING
                    {
                    lv_methodName_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleClassBinding1630); 

                    			newLeafNode(lv_methodName_5_0, grammarAccess.getClassBindingAccess().getMethodNameSTRINGTerminalRuleCall_4_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getClassBindingRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"methodName",
                            		lv_methodName_5_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassBinding"


    // $ANTLR start "ruleLanguage"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:715:1: ruleLanguage returns [Enumerator current=null] : ( (enumLiteral_0= 'Java' ) | (enumLiteral_1= 'C++' ) | (enumLiteral_2= 'C' ) ) ;
    public final Enumerator ruleLanguage() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;

         enterRule(); 
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:717:28: ( ( (enumLiteral_0= 'Java' ) | (enumLiteral_1= 'C++' ) | (enumLiteral_2= 'C' ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:718:1: ( (enumLiteral_0= 'Java' ) | (enumLiteral_1= 'C++' ) | (enumLiteral_2= 'C' ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:718:1: ( (enumLiteral_0= 'Java' ) | (enumLiteral_1= 'C++' ) | (enumLiteral_2= 'C' ) )
            int alt9=3;
            switch ( input.LA(1) ) {
            case 26:
                {
                alt9=1;
                }
                break;
            case 27:
                {
                alt9=2;
                }
                break;
            case 28:
                {
                alt9=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }

            switch (alt9) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:718:2: (enumLiteral_0= 'Java' )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:718:2: (enumLiteral_0= 'Java' )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:718:4: enumLiteral_0= 'Java'
                    {
                    enumLiteral_0=(Token)match(input,26,FOLLOW_26_in_ruleLanguage1687); 

                            current = grammarAccess.getLanguageAccess().getJavaEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getLanguageAccess().getJavaEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:724:6: (enumLiteral_1= 'C++' )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:724:6: (enumLiteral_1= 'C++' )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:724:8: enumLiteral_1= 'C++'
                    {
                    enumLiteral_1=(Token)match(input,27,FOLLOW_27_in_ruleLanguage1704); 

                            current = grammarAccess.getLanguageAccess().getC_PlusPlusEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getLanguageAccess().getC_PlusPlusEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:730:6: (enumLiteral_2= 'C' )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:730:6: (enumLiteral_2= 'C' )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/xabnf/parser/antlr/internal/InternalXabnf.g:730:8: enumLiteral_2= 'C'
                    {
                    enumLiteral_2=(Token)match(input,28,FOLLOW_28_in_ruleLanguage1721); 

                            current = grammarAccess.getLanguageAccess().getCEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_2, grammarAccess.getLanguageAccess().getCEnumLiteralDeclaration_2()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLanguage"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleXabnf_in_entryRuleXabnf75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXabnf85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGeneratorModel_in_ruleXabnf131 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_ruleBindings_in_ruleXabnf152 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGeneratorModel_in_entryRuleGeneratorModel188 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGeneratorModel198 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleGeneratorModel280 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleGeneratorModel292 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleGeneratorModel304 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleGeneratorModel316 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleGeneratorModel333 = new BitSet(new long[]{0x00000000000F8802L});
    public static final BitSet FOLLOW_15_in_ruleGeneratorModel406 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleGeneratorModel418 = new BitSet(new long[]{0x000000001C000000L});
    public static final BitSet FOLLOW_ruleLanguage_in_ruleGeneratorModel439 = new BitSet(new long[]{0x00000000000F8802L});
    public static final BitSet FOLLOW_16_in_ruleGeneratorModel507 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleGeneratorModel519 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleGeneratorModel536 = new BitSet(new long[]{0x00000000000F8802L});
    public static final BitSet FOLLOW_17_in_ruleGeneratorModel609 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleGeneratorModel621 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleGeneratorModel641 = new BitSet(new long[]{0x00000000000F8802L});
    public static final BitSet FOLLOW_18_in_ruleGeneratorModel709 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleGeneratorModel721 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleGeneratorModel738 = new BitSet(new long[]{0x00000000000F8802L});
    public static final BitSet FOLLOW_19_in_ruleGeneratorModel811 = new BitSet(new long[]{0x00000000000F8802L});
    public static final BitSet FOLLOW_ruleBindings_in_entryRuleBindings893 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBindings903 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleBindings949 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleBindings961 = new BitSet(new long[]{0x0000000000280000L});
    public static final BitSet FOLLOW_ruleBinding_in_ruleBindings982 = new BitSet(new long[]{0x0000000000280000L});
    public static final BitSet FOLLOW_19_in_ruleBindings995 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBinding_in_entryRuleBinding1031 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBinding1041 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRuleBinding_in_ruleBinding1088 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleClassBinding_in_ruleBinding1115 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRuleBinding_in_entryRuleRuleBinding1150 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRuleBinding1160 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleRuleBinding1197 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRuleBinding1217 = new BitSet(new long[]{0x0000000000401002L});
    public static final BitSet FOLLOW_22_in_ruleRuleBinding1230 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRuleBinding1247 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_12_in_ruleRuleBinding1267 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_ruleFieldBinding_in_ruleRuleBinding1288 = new BitSet(new long[]{0x0000000000880000L});
    public static final BitSet FOLLOW_19_in_ruleRuleBinding1301 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFieldBinding_in_entryRuleFieldBinding1339 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFieldBinding1349 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleFieldBinding1386 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleFieldBinding1403 = new BitSet(new long[]{0x0000000000400020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFieldBinding1428 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleFieldBinding1441 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleFieldBinding1458 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleClassBinding_in_entryRuleClassBinding1499 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleClassBinding1509 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleClassBinding1546 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleClassBinding1566 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleClassBinding1578 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleClassBinding1595 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleClassBinding1613 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleClassBinding1630 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleLanguage1687 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleLanguage1704 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleLanguage1721 = new BitSet(new long[]{0x0000000000000002L});

}
